package Pack;
import org.junit.*;

public class VerificadorTest {

	@Test public void testaEmail(){
		Assert.assertTrue(Verificador.ehEmailValido("andre@aguinaldoabrantes.tk"));
		Assert.assertTrue(Verificador.ehEmailValido("deuzimars@gmail.com"));
		Assert.assertTrue(Verificador.ehEmailValido("aluno@ccc.ufcg.edu.br"));
		Assert.assertFalse(Verificador.ehEmailValido(""));
		Assert.assertFalse(Verificador.ehEmailValido("#lala@imbeingtrolled.fuuu"));
		Assert.assertFalse(Verificador.ehEmailValido("@omgFail"));
		Assert.assertFalse(Verificador.ehEmailValido("just.testing@fuck"));
		Assert.assertFalse(Verificador.ehEmailValido("A.@"));
		Assert.assertFalse(Verificador.ehEmailValido("PORFAVORNAOquebra"));
		Assert.assertFalse(Verificador.ehEmailValido("NAO QUEBRA PLS@ HOTMAIL.COM"));
		Assert.assertFalse(Verificador.ehEmailValido("tsc@.com"));	
	}
	
	@Test public void testaTelefone(){
		Assert.assertTrue(Verificador.ehTelefoneValido("(83)1234-5678"));
		Assert.assertFalse(Verificador.ehTelefoneValido("234-5678"));
		Assert.assertFalse(Verificador.ehTelefoneValido("(1)1234-568"));
		Assert.assertFalse(Verificador.ehTelefoneValido("(  )1234-5678"));
		Assert.assertFalse(Verificador.ehTelefoneValido("|55|1234|5678"));
		Assert.assertFalse(Verificador.ehTelefoneValido("12345678"));
		Assert.assertFalse(Verificador.ehTelefoneValido("(34)12345678"));
		Assert.assertFalse(Verificador.ehTelefoneValido("32123-45678"));
		Assert.assertFalse(Verificador.ehTelefoneValido("1234-5678(83)"));
		Assert.assertFalse(Verificador.ehTelefoneValido("123405678"));
		Assert.assertFalse(Verificador.ehTelefoneValido("1234 5678"));
		Assert.assertFalse(Verificador.ehTelefoneValido("1234X5678"));
		Assert.assertFalse(Verificador.ehTelefoneValido("O234-FAIL"));
		Assert.assertFalse(Verificador.ehTelefoneValido("(())12345678"));
	}

	@Test public void testaNome(){
		Assert.assertTrue(Verificador.ehNomeValido("Deuzimar"));
		Assert.assertTrue(Verificador.ehNomeValido(" r o f l"));
		Assert.assertTrue(Verificador.ehNomeValido("N4OE2cr3v4m4ss1mplz"));
		Assert.assertFalse(Verificador.ehNomeValido(""));
		Assert.assertFalse(Verificador.ehNomeValido("   "));
	}
	
	@Test public void testaData(){
		//Data sem Ano
		Assert.assertTrue(Verificador.ehDataSemAnoValida("22/01"));
		Assert.assertTrue(Verificador.ehDataSemAnoValida("31/12"));
		Assert.assertFalse(Verificador.ehDataSemAnoValida("22/1"));
		Assert.assertFalse(Verificador.ehDataSemAnoValida("30/02"));
		Assert.assertFalse(Verificador.ehDataSemAnoValida("32/11"));
		Assert.assertFalse(Verificador.ehDataSemAnoValida("35/09"));
		Assert.assertFalse(Verificador.ehDataSemAnoValida("31/04"));
		Assert.assertFalse(Verificador.ehDataSemAnoValida("31/11"));
		Assert.assertFalse(Verificador.ehDataSemAnoValida("as/10"));
		Assert.assertFalse(Verificador.ehDataSemAnoValida("-1/10"));
		Assert.assertFalse(Verificador.ehDataSemAnoValida("22/-2"));
		Assert.assertFalse(Verificador.ehDataSemAnoValida("22\12"));
		Assert.assertFalse(Verificador.ehDataSemAnoValida("22|12"));
		Assert.assertFalse(Verificador.ehDataSemAnoValida("22X11"));
		
		//Data com ano
		Assert.assertTrue(Verificador.ehDataComAnoValida("22/01/0001"));
		Assert.assertTrue(Verificador.ehDataComAnoValida("22/01/2001"));
		Assert.assertTrue(Verificador.ehDataComAnoValida("29/02/2000"));
		Assert.assertFalse(Verificador.ehDataComAnoValida("29/02/2001"));
		Assert.assertFalse(Verificador.ehDataComAnoValida("29/02/2100"));
		Assert.assertFalse(Verificador.ehDataComAnoValida("31/04/2010"));
		Assert.assertFalse(Verificador.ehDataComAnoValida("29/04/-100"));
		Assert.assertFalse(Verificador.ehDataComAnoValida("39/2/00"));
		Assert.assertFalse(Verificador.ehDataComAnoValida("5/10/11"));
		Assert.assertFalse(Verificador.ehDataComAnoValida("13/07/kkkk"));
		Assert.assertFalse(Verificador.ehDataComAnoValida(""));
		Assert.assertFalse(Verificador.ehDataComAnoValida("2012/12/21"));
	}
}
